package fr.esisar.cs420.traitement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Livre extends Album{

	public static void getLivre( int visible ){
		
		String select ;
		
		
		int ordre = 1 ;
			
		if(visible == 1 ){
			select= " SELECT a.idalbum , a.titre FROM Livre l , Album a  where  l.idlivre = a.idlivre and visible = " + visible;
		}
		else{
			 select = " SELECT a.idalbum , a.titre , a.idLivre FROM Album a , Client c , Livre l where a.idLivre = l.idLivre  and a.idClient = c.mail and c.mail like '" + Application.client.getMail() +"'" ;
		}
		
		try {
			
			Statement stmt = Application.getStmt();
			stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			
			while (res.next())
			{
				
				InfoAlbum livre = new InfoAlbum(ordre + " : " + res.getString(2),res.getInt(1),res.getInt(1));
				ordre++;
				Album.addAlbum(livre);			
			}
			stmt.executeUpdate("COMMIT");
			res.close();
			
		} catch (SQLException e) {
			System.out.println("Erreur");
			e.printStackTrace();
		}
		
	}
	
	/**
	 * Methode permettant de créer un Livre
	 * @param titre : titre de l'album
	 * @param visible : visibilité de l'album : 1 : Public : 0 : Privé
	 */
	public static void creationLivre(String titre, int visible){
	
		String idLivre ;
		
		String insertAlbum = "insert into Livre values('','','' ) ";
		
		String select = "select Max(idLivre) from Livre ";
		
		try {
			Statement stmt = Application.getStmt();
			stmt.executeUpdate(insertAlbum);
				
			ResultSet res = stmt.executeQuery(select);	
			res.next();
			
			/* on récupère l'identifiant de l'image ajoutée */
		    idLivre =  res.getString(1);
		    res.close();
			
			Album.creationAlbumLivre(titre, visible, idLivre);
			
			stmt.executeUpdate("COMMIT");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static String afficher(Object object, int ordre ){
		
	String select = " SELECT i.chemin FROM Album a , Image i  , AlbumContient c, Livre l  where l.idLivre = a.idLivre and i.idimage = c.idimage and c.idAlbum = a.idAlbum and a.titre like '" + object + "' and c.numOrdre = " + ordre;
		
	String chemin = null ;
	try {
			
			/* Recuperation de la connection a la base de donnee */
			Statement stmt = Application.getStmt();
			/* Execution de la commande */
			stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			
			/* S'il y a un resultat */
			if (res.next() != false ){
							
			    chemin = res.getString(1);			
				stmt.executeUpdate("COMMIT");
				res.close();
			}
			
			
		} catch (SQLException e) {
			System.out.println("Erreur");
			e.printStackTrace();
		}
		return chemin;
		
	}
	
	
	/**
	 * Methode permettant de gérer les informations d'un album
	 * @param idAlbum    : Identifiant de l'album
	 * @param titre      : titre de l'album
	 * @param sousTitre  : Soustitre de l'album
	 * @param visible    : visibilité de l'album
	 */
	public static void gererInfoLivre(int idLivre , int idAlbum , String titre , String sousTitre , int visible , String preface , String postface ){

		String update = "UPDATE Livre SET postface = '"+postface+"', preface = '"+preface+"'  WHERE idLivre = "+idLivre;
		
		try {
			/* Recuperation de la connection a la base de donnee */
			Statement stmt = Application.getStmt();
			/* Execution de la commande */
			int res = stmt.executeUpdate(update);
			
			Album.gererInfoAlbum(idAlbum, titre, sousTitre, visible);
			
			if (res == 0){
				System.out.println("Erreur UPDATE SQL"); 
			}
			
			stmt.executeUpdate("COMMIT");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Methode permettant d'obtenir les informations d'un album
	 * @param idAlbum
	 * @return
	 */
	public static InfoAlbum GetInfoLivre(int idLivre)
	{
		
		String select = " SELECT a.idAlbum, a.titre , a.soustitre , l.postface , l.preface  FROM Album a , Livre l   where  a.idLivre = l.idLivre and a.idLivre =  " + idLivre ;
		
		InfoAlbum album = null;
		
		try {
			
			/* Recuperation de la connection a la base de donnee */
			Statement stmt = Application.getStmt();
			/* Execution de la commande */
			stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			
			res.next();
			
			/* On récupère les informations */
			album = new InfoAlbum(res.getString(2),idLivre,Integer.valueOf(res.getString(1)),res.getString(3),res.getString(4),res.getString(5) );
			
			stmt.executeUpdate("COMMIT");
			res.close();
			
			
		} catch (SQLException e) {
			System.out.println("Erreur");
			e.printStackTrace();
		}
		
		return album;		
		
	}
	
	

}
